Due to advancements in processing technology, complex integrated circuits (ICs) can be designed using various levels of abstraction. Using a hardware description language (HDL), circuits can be designed at the gate level, the register transfer level (RTL), and higher logical levels. When designing using an HDL, the design is often structured in a modular manner. The designer describes a module in terms of the behavior of a system, the behavior describing the generation and propagation of signals through combinatorial modules from one set of registers to another set of registers. HDLs provide a rich set of constructs to describe the functionality of a module. Modules may be combined and augmented to form even higher level modules.
To reduce design costs, designers often incorporate previously created designs that have been provided either from within an enterprise or from a commercial provider. Libraries of pre-developed blocks of logic have been developed that can be selected and included in a circuit design. Such library modules include, for example, adders, multipliers, filters, and other arithmetic and digital signal processing (DSP) functions from which system designs can be readily constructed. The engineering community sometimes refers to these previously created designs as “IP cores” (intellectual property cores), or “logic cores,” and such terms may be used interchangeably herein. The use of pre-developed logic cores permits faster design cycles by eliminating the redesign of circuits. Thus, using cores from a library may reduce design costs.
Some circuit designs may have parts specified in an HDL and other parts specified in a high-level language (HLL), such as C or C++, for example. Through a direct programming interface (DPI), modules in the HDL portion may invoke functions in the HLL portions, and functions in the HLL portion may invoke modules in the HDL portion. HLLs are different from HDLs in that HLLs may be used for general purpose programming of a computer. That is, an HLL program may be compiled into code that is executable by a computer processor. In contrast, an HDL specification is a high-level description from which a circuit may be implemented.
Prior to implementation, a circuit design may be simulated to determine whether the design will function as required. Wasted manufacturing costs due to faulty design may thereby be avoided. For simulation to be effective, the simulation must reflect the functional intent of the circuit designer. However, if there are errors in the HDL and/or HLL portions of the circuit design, that are not caught by the compiler or at runtime, simulation results may be erroneous or misleading. Problems encountered during simulation may delay the development process and increase development costs.